/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * DescriptionGUI.java
 *
 * Created on 13/Dez/2011, 19:40:21
 */

package intopo.game;

import intopo.game.gui.AbstractGameEditorComponent;
import intopo.game.gui.AbstractStrategyEditorComponent;
import intopo.game.gui.AbstractGlobalParametersComponent;


/**
 * Defines methods that return GUI swing components to edit all aspects of a specific game.
 *
 * @author <a href="mailto:mariano.pedro@gmail.com">Pedro Mariano</a>
 *
 * @version 1.0 13/Dez/2011
 */
public interface DescriptionGUI<G extends Game<S>, S extends Strategy<S>>
	extends DescriptionText<G, S>
{
	/**
	 * Get a component where a user can select the parameters of a specific game.
	 * <p> When the component is instantiated it must contain default parameters for the game.
	 * This game can be obtained through method {@code getGame()}.
	 * 
	 * @return a component where a user can select the parameters of a specific game.
	 */
	AbstractGameEditorComponent<G, S> getGameEditorComponent ();
	/**
	 * Get a component where a user can select the parameters of a specific strategy.
	 * @return A component where a user can select the parameters of a specific strategy.
	 */
	AbstractStrategyEditorComponent<S> getStrategyEditorComponent ();
	/**
	 * Get a component where a user can select the parameters that affect all instances of classes that model a specific game.
	 * If this component wants to provide some undo behaviour, it is up to the implementor of this interface to program this behaviour.
	 * @return a component where a user can select the parameters that affect all instances of classes that model a specific game.
	 */
	AbstractGlobalParametersComponent getGlobalParametersEditorComponent ();
}

// Local Variables:
// mode: java
// mode: flyspell-prog
// ispell-local-dictionary: "british"
// End:
